<?php

if(!defined("VL_LEGAL")) die();

/**
 * Класс для управления событиями и их группами.
 * @author vladimmi <vladimmi@ya.ru>
 */
class vlEvents
{
	/**
	 * Загрузить информацию о событии
	 * @param string $name Имя события
	 * @return mixed Массив с информацией о событии
	 */
	function eventGet($name)
	{
		$API=&vlAPI::getInstance();
		$result=$API->db[VL_DBROLE_MAIN]->query("SELECT * FROM ".VL_TABLE_EVENTS." WHERE ev_name='".$name."'");
		$info=false;
		if($result) $info=$API->db[VL_DBROLE_MAIN]->fetchAssoc($result);
		return $info;
	}

	/**
	 * Обновить информацию о событии
	 * @param string $name Имя события
	 * @param mixed $info Новая информация о нем
	 * @return bool Результат обновления данных
	 */
	function eventSet($name, $info)
	{
		$API=&vlAPI::getInstance();
		$query="UPDATE ".VL_TABLE_EVENTS." SET ";
		$i=1;
		foreach($info as $key=>$value) {
			$query.=$key."='".str_replace("'", "\'", $value)."'";
			if($i!=count($info)) $query.=", ";
			$i++;
		}
		$query.=" WHERE ev_name='".$name."'";
		return $API->db[VL_DBROLE_MAIN]->query($query);
	}
	
	/**
	 * Добавить новое событие в базу данных
	 * @param mixed $info Массив с информацией о событии
	 * @return bool Результат добавления
	 */
	function eventAdd($info)
	{
		$API=&vlAPI::getInstance();
		$query="INSERT INTO ".VL_TABLE_EVENTS." (";
		$keys=array_keys($info);
		$query.=implode(",", $keys).") VALUES (";
		$values=array_values($info);
		for($i=0; $i<count($values); $i++) {
			$query.="'".str_replace("'", "\'", $values[$i])."'";
			if($i<count($values)-1) $query.=", ";
		}
		$query.=")";
		return $API->db[VL_DBROLE_MAIN]->query($query);
	}

	/**
	 * Удалить событие из базы данных
	 * @param string $name Имя события
	 * @return bool Результат удаления
	 */
	function eventDelete($name)
	{
		$API=&vlAPI::getInstance();
		$query="DELETE FROM ".VL_TABLE_EVENTS." WHERE ev_name='".$name."'";
		return $API->db[VL_DBROLE_MAIN]->query($query);
	}

	/**
	 * Существует ли указанное событие
	 * @param string $name Имя события
	 * @return bool
	 */
	function eventExists($name)
	{
		$API=&vlAPI::getInstance();
		return $API->db[VL_DBROLE_MAIN]->query("SELECT name FROM ".VL_TABLE_EVENTS." WHERE ev_name='".$name."'");
	}
	
	/**
	 * Получить информацию о группе событий
	 * @param string $name Имя группы событий
	 * @return mixed Массив с информацией о группе событий
	 */
	function groupGet($name)
	{
		$API=&vlAPI::getInstance();
		$result=$API->db[VL_DBROLE_MAIN]->query("SELECT * FROM ".VL_TABLE_EVENTGROUPS." WHERE evgrp_name='".$name."'");
		$info=false;
		if($result) $info=$API->db[VL_DBROLE_MAIN]->fetchAssoc($result);
		return $info;
	}
	
	/**
	 * Обновить информацию о группе событий
	 * @param string $name Имя группы
	 * @param mixed $info Массив с новой информацией
	 * @return bool Результат обновления данных
	 */
	function groupSet($name, $info)
	{
		$API=&vlAPI::getInstance();
		$query="UPDATE ".VL_TABLE_EVENTGROUPS." SET ";
		$i=1;
		foreach($info as $key=>$value) {
			$query.=$key."='".str_replace("'", "\'", $value)."'";
			if($i!=count($info)) $query.=", ";
			$i++;
		}
		$query.=" WHERE evgrp_name='".$name."'";
		return $API->db[VL_DBROLE_MAIN]->query($query);
	}
	
	/**
	 * Добавить новую группу событий
	 * @param mixed $info Массив с информацией о группе
	 * @return bool Результат добавления
	 */
	function groupAdd($info)
	{
		$API=&vlAPI::getInstance();
		$query="INSERT INTO ".VL_TABLE_EVENTGROUPS." (";
		$keys=array_keys($info);
		$query.=implode(",", $keys).") VALUES (";
		$values=array_values($info);
		for($i=0; $i<count($values); $i++) {
			$query.="'".str_replace("'", "\'", $values[$i])."'";
			if($i<count($values)-1) $query.=", ";
		}
		$query.=")";
		return $API->db[VL_DBROLE_MAIN]->query($query);
	}
	
	/**
	 * Удалить группу событий
	 * @param string $name Имя группы
	 * @return bool Результат удаления
	 */
	function groupDelete($name)
	{
		$API=&vlAPI::getInstance();
		$query="DELETE FROM ".VL_TABLE_EVENTGROUPS." WHERE evgrp_name='".$name."'";
		return $API->db[VL_DBROLE_MAIN]->query($query);
	}
	
	/**
	 * Существует ли указанная группа событий
	 * @param string $name Имя группы
	 * @return bool
	 */
	function groupExists($name)
	{
		$API=&vlAPI::getInstance();
		$query="DELETE FROM ".VL_TABLE_EVENTGROUPS." WHERE evgrp_name='".$name."'";
		return $API->db[VL_DBROLE_MAIN]->query($query);
	}
}

?>